package org.jeecg.modules.cascv.image.util;

import cn.hutool.core.util.HexUtil;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class HeaderUtil {

    public static void main(String[] args) {
        String xx = "1acffc1d00000008010000000000000100000176b6cfa18c0108000b00000297000001a300000130000000a0000000000000000";
        String idsName = "xx6";
        Map<String, String> map = parseWuRongQi(xx, idsName);
        System.out.println(map);
    }

    public static Map<String, String> parseWuRongQi(String dataFramesStr, String idsName) {

        String numStr = idsName.substring(idsName.length() - 1);

        dataFramesStr = dataFramesStr.substring(8);

        Map<String, String> map = new HashMap<>();
        String imageIndexStr = dataFramesStr.substring(0, 8);
        String keyStr = dataFramesStr.substring(8, 10);
        String tianchongStr = dataFramesStr.substring(10, 20);
        String rackTypeStr = dataFramesStr.substring(20, 24);
        String timeStr = dataFramesStr.substring(24, 40);
        Long time = Long.parseUnsignedLong(timeStr, 16);
        String imageTypeStr = dataFramesStr.substring(40, 48);
        String widthStr = dataFramesStr.substring(48, 56);
        String heightStr = dataFramesStr.substring(56, 64);
        String xStr = dataFramesStr.substring(64, 72);
        String yStr = dataFramesStr.substring(72, 80);
        String pxStr = dataFramesStr.substring(80, 84);
        String pyStr = dataFramesStr.substring(84, 88);
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_1", imageIndexStr + "H;" + Integer.parseUnsignedInt(imageIndexStr, 16) + ";图像帧数;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_2", keyStr + "H;" + keyStr + "H;标识;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_3", tianchongStr + "H;" + tianchongStr + "H;填充;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_4", rackTypeStr + "H;" + rackTypeStr + "H;载荷类型;否");
//        map.put("A1_CMPR_MICU_APP"+numStr+"DATA_ZDY_5", timeStr + "H;" + DateUtils.format(new Date(org.poac.gmv.base.util.CommonUtil.computeBJTimeByShipTime(time)), "yyyy-MM-dd_HH-mm-ss.SSS") + ";时间戳;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_5", timeStr + "H;" + time * 8 + ";时间戳;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_6", imageTypeStr + "H;" + imageTypeStr + "H;图片格式;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_7", widthStr + "H;" + Integer.parseUnsignedInt(widthStr, 16) + ";宽;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_8", heightStr + "H;" + Integer.parseUnsignedInt(heightStr, 16) + ";高;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_9", xStr + "H;" + Integer.parseUnsignedInt(xStr, 16) + ";x偏移;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_10", yStr + "H;" + Integer.parseUnsignedInt(yStr, 16) + ";y偏移;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_11", pxStr + "H;" + Integer.parseUnsignedInt(pxStr, 16) + ";Padding-x;否");
        map.put("A1_CMPR_MICU_APP" + numStr + "DATA_ZDY_12", pyStr + "H;" + Integer.parseUnsignedInt(pyStr, 16) + ";Padding-y;否");
        return map;
//        <Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/1</ParameterNo>
//            <ParameterName name="参数名称">图像帧数</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/2</ParameterNo>
//            <ParameterName name="参数名称">标识</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/3</ParameterNo>
//            <ParameterName name="参数名称">填充</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/4</ParameterNo>
//            <ParameterName name="参数名称">载荷类型</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/5</ParameterNo>
//            <ParameterName name="参数名称">时间戳</ParameterName>
//            <DataType name="数据类型">时间码</DataType>
//            <DisplayFormat name="显示格式">YYYY-MM-DD_HH-MM-SS.sss</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/6</ParameterNo>
//            <ParameterName name="参数名称">图片格式</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/7</ParameterNo>
//            <ParameterName name="参数名称">宽</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/8</ParameterNo>
//            <ParameterName name="参数名称">高</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/9</ParameterNo>
//            <ParameterName name="参数名称">x偏移</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/10</ParameterNo>
//            <ParameterName name="参数名称">y偏移</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/11</ParameterNo>
//            <ParameterName name="参数名称">Padding-x</ParameterName>
//            <DataType name="数据类型">两字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP5DATA/ZDY/12</ParameterNo>
//            <ParameterName name="参数名称">Padding-y</ParameterName>
//            <DataType name="数据类型">两字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
    }

    public static Map<String, String> parseXuanFu(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();
        String imageIndexStr = dataFramesStr.substring(0, 2);
        String lenStr = dataFramesStr.substring(8, 16);
        String keyStr = dataFramesStr.substring(16, 18);
        String yuliu1Str = dataFramesStr.substring(18, 24);
        String secondStr = dataFramesStr.substring(32, 40);
        String subSecondStr = dataFramesStr.substring(40, 44);
        String yuliu2Str = dataFramesStr.substring(44, 48);
        Integer second = NumberUtil.versbyte2Integer(HexUtil.decodeHex(secondStr), 0);
        map.put("HMLR_PD_APP_H4_7_ZDY_1", imageIndexStr + "H;" + Integer.parseUnsignedInt(imageIndexStr, 16) + ";图像序号;否");
        map.put("HMLR_PD_APP_H4_7_ZDY_2", lenStr + "H;" + NumberUtil.versbyte2Integer(HexUtil.decodeHex(lenStr), 0) + ";JPEG图像总字节数;否");
        map.put("HMLR_PD_APP_H4_7_ZDY_3", keyStr + "H;" + keyStr + "H;标识;否");
//        map.put("HMLR_PD_APP_H4_7_ZDY_4", yuliu1Str + "H;" + yuliu1Str + "H;预留1;否");
        map.put("HMLR_PD_APP_H4_7_ZDY_5", secondStr + "H;" + getShipSecond(second.longValue()) + ";时间戳秒;否");
        map.put("HMLR_PD_APP_H4_7_ZDY_6", subSecondStr + "H;" + NumberUtil.versbyte22Integer(HexUtil.decodeHex(subSecondStr), 0) * 25 + ";时间戳亚秒;否");
//        map.put("HMLR_PD_APP_H4_7_ZDY_7", yuliu2Str + "H;" + yuliu2Str + "H;预留2;否");
        return map;
//        <Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/1</ParameterNo>
//            <ParameterName name="参数名称">图像序号</ParameterName>
//            <DataType name="数据类型">单字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/2</ParameterNo>
//            <ParameterName name="参数名称">JPEG图像总字节数</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/3</ParameterNo>
//            <ParameterName name="参数名称">标识</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/4</ParameterNo>
//            <ParameterName name="参数名称">预留1</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/5</ParameterNo>
//            <ParameterName name="参数名称">时间戳秒</ParameterName>
//            <DataType name="数据类型">时间码</DataType>
//            <DisplayFormat name="显示格式">天:时：分：秒</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/6</ParameterNo>
//            <ParameterName name="参数名称">时间戳亚秒</ParameterName>
//            <DataType name="数据类型">双字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//            <Remark name="说明">乘以25后转为us</Remark>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">HMLR-PD-APP-H4-7/ZDY/7</ParameterNo>
//            <ParameterName name="参数名称">预留2</ParameterName>
//            <DataType name="数据类型">其他</DataType>
//            <DisplayFormat name="显示格式">十六进制</DisplayFormat>
//        </Parameter>
    }

    public static Map<String, String> parseWeiKong(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();

        String widthStr = dataFramesStr.substring(0, 8);
        String heightStr = dataFramesStr.substring(8, 16);
        Integer width = Integer.parseUnsignedInt(widthStr, 16);
        Integer height = Integer.parseUnsignedInt(heightStr, 16);
        String imageIndexStr = dataFramesStr.substring(16, 32);
        String xStr = dataFramesStr.substring(32, 40);
        String yStr = dataFramesStr.substring(40, 48);
        Long imageIndex = Long.parseUnsignedLong(imageIndexStr, 16);
        Float x = NumberUtil.byte2Float(HexUtil.decodeHex(xStr), 0);
        Float y = NumberUtil.byte2Float(HexUtil.decodeHex(yStr), 0);

        map.put("A1_CMPR_MICU_APP9DATA_ZDY_1", widthStr + "H;" + width + ";图像宽度;否");
        map.put("A1_CMPR_MICU_APP9DATA_ZDY_2", heightStr + "H;" + height + ";图像高度;否");
        map.put("A1_CMPR_MICU_APP9DATA_ZDY_3", imageIndexStr + "H;" + imageIndex + ";图像帧序号;否");
        map.put("A1_CMPR_MICU_APP9DATA_ZDY_4", xStr + "H;" + new BigDecimal(x).setScale(5, BigDecimal.ROUND_HALF_UP).toPlainString() + ";x坐标;否");
        map.put("A1_CMPR_MICU_APP9DATA_ZDY_5", yStr + "H;" + new BigDecimal(y).setScale(5, BigDecimal.ROUND_HALF_UP).toPlainString() + ";y坐标;否");

//        <Parameter>">四字节无符号数</DataType>
////            <DisplayFormat name="显
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/1</ParameterNo>
//            <ParameterName name="参数名称">图像宽度</ParameterName>
//            <DataType name="数据类型示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/2</ParameterNo>
//            <ParameterName name="参数名称">图像高度</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/3</ParameterNo>
//            <ParameterName name="参数名称">图像帧序号</ParameterName>
//            <DataType name="数据类型">八字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/4</ParameterNo>
//            <ParameterName name="参数名称">x坐标</ParameterName>
//            <DataType name="数据类型">单精度浮点数</DataType>
//            <DisplayFormat name="显示格式">单精度浮点数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/5</ParameterNo>
//            <ParameterName name="参数名称">y坐标</ParameterName>
//            <DataType name="数据类型">单精度浮点数</DataType>
//            <DisplayFormat name="显示格式">单精度浮点数</DisplayFormat>
//        </Parameter>
        return map;
    }

    public static Map<String, String> parseShengwushiyangui(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();

        String xzhou = dataFramesStr.substring(0, 4);
        String yzhou = dataFramesStr.substring(4, 8);
        String zzhou = dataFramesStr.substring(8, 12);
        String jifenshijian = dataFramesStr.substring(12, 16);


        map.put("A1_CMPR_MICU_DATA_X_1", xzhou + "H;" + Integer.parseUnsignedInt(xzhou, 16) + ";x坐标;否");
        map.put("A1_CMPR_MICU_DATA_Y_2", yzhou + "H;" + Integer.parseUnsignedInt(yzhou, 16) + ";y坐标;否");
        map.put("A1_CMPR_MICU_DATA_Z_3", zzhou + "H;" + Integer.parseUnsignedInt(zzhou, 16) + ";z坐标;否");
        map.put("A1_CMPR_MICU_DATA_TIME_4", jifenshijian + "H;" + Integer.parseUnsignedInt(jifenshijian, 16) + ";积分时间;否");

//        <Parameter>">四字节无符号数</DataType>
////            <DisplayFormat name="显
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/1</ParameterNo>
//            <ParameterName name="参数名称">图像宽度</ParameterName>
//            <DataType name="数据类型示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/2</ParameterNo>
//            <ParameterName name="参数名称">图像高度</ParameterName>
//            <DataType name="数据类型">四字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/3</ParameterNo>
//            <ParameterName name="参数名称">图像帧序号</ParameterName>
//            <DataType name="数据类型">八字节无符号数</DataType>
//            <DisplayFormat name="显示格式">十进制整数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/4</ParameterNo>
//            <ParameterName name="参数名称">x坐标</ParameterName>
//            <DataType name="数据类型">单精度浮点数</DataType>
//            <DisplayFormat name="显示格式">单精度浮点数</DisplayFormat>
//        </Parameter>
//		<Parameter>
//            <ParameterNo name="参数代号及参数规范号">A1/CMPR-MICU/APP10DATA/ZDY/5</ParameterNo>
//            <ParameterName name="参数名称">y坐标</ParameterName>
//            <DataType name="数据类型">单精度浮点数</DataType>
//            <DisplayFormat name="显示格式">单精度浮点数</DisplayFormat>
//        </Parameter>
        return map;
    }

    public static Map<String, String> parseGaowengui(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();

        String xzhou = dataFramesStr.substring(0, 4);
        String yzhou = dataFramesStr.substring(4, 8);
        String zzhou = dataFramesStr.substring(8, 12);
        String jifenshijian = dataFramesStr.substring(12, 16);

        map.put("A1_CMPR_MICU_DATA_X_1", xzhou + "H;" + Integer.parseUnsignedInt(xzhou, 16) + ";x坐标;否");
        map.put("A1_CMPR_MICU_DATA_Y_2", yzhou + "H;" + Integer.parseUnsignedInt(yzhou, 16) + ";y坐标;否");
        map.put("A1_CMPR_MICU_DATA_Z_3", zzhou + "H;" + Integer.parseUnsignedInt(zzhou, 16) + ";z坐标;否");
        map.put("A1_CMPR_MICU_DATA_TIME_4", jifenshijian + "H;" + Integer.parseUnsignedInt(jifenshijian, 16) + ";积分时间;否");

        return map;
    }

    public static Map<String, String> parseShengWuguiJ2k(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();
        String xzhou = dataFramesStr.substring(0, 4);
        String yzhou = dataFramesStr.substring(4, 8);
        String zzhou = dataFramesStr.substring(8, 12);
        String jifenshijian = dataFramesStr.substring(12, 16);
        map.put("A1_CMPR_MICU_DATA_X_1", xzhou + "H;" + Integer.parseUnsignedInt(xzhou, 16) + ";x坐标;否");
        map.put("A1_CMPR_MICU_DATA_Y_2", yzhou + "H;" + Integer.parseUnsignedInt(yzhou, 16) + ";y坐标;否");
        map.put("A1_CMPR_MICU_DATA_Z_3", zzhou + "H;" + Integer.parseUnsignedInt(zzhou, 16) + ";z坐标;否");
        map.put("A1_CMPR_MICU_DATA_TIME_4", jifenshijian + "H;" + Integer.parseUnsignedInt(jifenshijian, 16) + ";积分时间;否");
        return map;

    }

    public static Map<String, String> parseXiaoxinTongyongShengwuPeiyangXianweiImg(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();
        String xzhou = dataFramesStr.substring(0, 4);
        String yzhou = dataFramesStr.substring(4, 8);
        String zzhou = dataFramesStr.substring(8, 12);
        String jifenshijian = dataFramesStr.substring(12, 16);
        map.put("A1_CMPR_MICU_DATA_X_1", xzhou + "H;" + Integer.parseUnsignedInt(xzhou, 16) + ";x坐标;否");
        map.put("A1_CMPR_MICU_DATA_Y_2", yzhou + "H;" + Integer.parseUnsignedInt(yzhou, 16) + ";y坐标;否");
        map.put("A1_CMPR_MICU_DATA_Z_3", zzhou + "H;" + Integer.parseUnsignedInt(zzhou, 16) + ";z坐标;否");
        map.put("A1_CMPR_MICU_DATA_TIME_4", jifenshijian + "H;" + Integer.parseUnsignedInt(jifenshijian, 16) + ";积分时间;否");
        return map;
    }

    public static Map<String, String> parseXiaoxinTongyongShengwuPeiyangXianweiVio(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();
        String xzhou = dataFramesStr.substring(0, 4);
        String yzhou = dataFramesStr.substring(4, 8);
        String zzhou = dataFramesStr.substring(8, 12);
        String jifenshijian = dataFramesStr.substring(12, 16);
        map.put("A1_CMPR_MICU_DATA_X_1", xzhou + "H;" + Integer.parseUnsignedInt(xzhou, 16) + ";x坐标;否");
        map.put("A1_CMPR_MICU_DATA_Y_2", yzhou + "H;" + Integer.parseUnsignedInt(yzhou, 16) + ";y坐标;否");
        map.put("A1_CMPR_MICU_DATA_Z_3", zzhou + "H;" + Integer.parseUnsignedInt(zzhou, 16) + ";z坐标;否");
        map.put("A1_CMPR_MICU_DATA_TIME_4", jifenshijian + "H;" + Integer.parseUnsignedInt(jifenshijian, 16) + ";积分时间;否");
        return map;
    }

    public static Map<String, String> parseCailiaocangwaibaolu(String dataFramesStr) {
        Map<String, String> map = new HashMap<>();

        if (StringUtils.isEmpty(dataFramesStr)) {
            map.put("曝光方式", "-;" + "-;" + ";-;-");
            map.put("曝光档位", "-;" + "-;" + ";-;-");
            map.put("CMOS温度码", "-;" + "-;" + ";-;-");
            map.put("接收指令计数", "-;" + "-;" + ";-;-");
            map.put("错误指令计数", "-;" + "-;" + ";-;-");
            map.put("拍照指令计数", "-;" + "-;" + ";-;-");
            map.put("图像帧计数", "-;" + "-;" + ";-;-");
            map.put("备用", "-;" + "-;" + ";-;-");
        } else {
            String bgfs = dataFramesStr.substring(8, 10);
            String bgdw = dataFramesStr.substring(10, 12);
            String wtm = dataFramesStr.substring(12, 14);
            String jszljs = dataFramesStr.substring(14, 16);
            String cwzljs = dataFramesStr.substring(16, 18);
            String pzzljs = dataFramesStr.substring(18, 20);
            String txjjs = dataFramesStr.substring(20, 22);
            String by = dataFramesStr.substring(22, 126);


            map.put("曝光方式", "0x" + bgfs);
            map.put("曝光档位", "0x" + bgdw);
            map.put("CMOS温度码", "0x" + wtm);
            map.put("接收指令计数", "0x" + jszljs);
            map.put("错误指令计数", "0x" + cwzljs);
            map.put("拍照指令计数", "0x" + pzzljs);
            map.put("图像帧计数", "0x" + txjjs);
            map.put("备用", "0x" + by);
        }


        return map;

    }

    /**
     * 封装shiptime
     *
     * @param second
     * @return
     */
    public static String getShipSecond(long second) {
        // 船上时间
        long shipTimestamp = (second * 1000);
        long day = shipTimestamp / 86400000; //天
        long hour = (shipTimestamp % 86400000) / 3600000; //小时
        long minute = ((shipTimestamp % 86400000) % 3600000) / 60000; //分钟
        long sec = (((shipTimestamp % 86400000) % 3600000) % 60000) / 1000; //秒
        String shipTime = day + ":" + hour + ":" + minute + ":" + sec;
        return shipTime;
    }


    /**
     * 封装shiptime
     *
     * @param second
     * @param subsecond
     * @return
     */
    public static String getShipTime(long second, long subsecond) {
        // 船上时间
        long shipTimestamp = (second * 1000) + (subsecond / 1000);
        long day = shipTimestamp / 86400000; //天
        long hour = (shipTimestamp % 86400000) / 3600000; //小时
        long minute = ((shipTimestamp % 86400000) % 3600000) / 60000; //分钟
        long sec = (((shipTimestamp % 86400000) % 3600000) % 60000) / 1000; //秒
        long millis = (((shipTimestamp % 86400000) % 3600000) % 60000) % 1000; //毫秒
        long microsecond = subsecond % 1000; //微秒
        String shipTime = day + "天" + hour + "时" + minute + "分" + sec + "秒" + millis + "毫秒" + microsecond + "微秒";
        return shipTime;
    }
}
